package com.example.rabbitmq.starter.handler;

/**
 * 消息消费失败后的处理接口
 * 当消息重试达到最大次数后，会调用此接口的实现类进行后续处理
 */
public interface FailureHandler {
    
    /**
     * 处理失败的消息
     * 
     * @param messageId 消息ID
     * @param messageContent 消息内容
     * @param messageType 消息类型
     * @param retryCount 已重试次数
     * @param lastException 最后一次异常信息
     */
    void handleFailure(String messageId, String messageContent, String messageType, int retryCount, Exception lastException);
    
    /**
     * 获取处理器名称
     * 
     * @return 处理器名称
     */
    default String getHandlerName() {
        return this.getClass().getSimpleName();
    }
}